home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / doors_1 / ckit254.zip / CKIT_TC.ZIP / CKIT.H < prev    next >
C/C++ Source or Header  |  1992-12-01  |  22KB  |  354 lines

  1. /****************************************************************************
  2.  *   FILE CKIT.H                                                            *
  3.  *   Created 11-FEB-1990            Rickie W. Belitz                        *
  4.  *                                  820 Brentwood Drive                     *
  5.  *                                  Maryville, Tennessee  37801             *
  6.  *                                  BBS (615) 982-6512                      *
  7.  *                                      (615) 982-6537                      *
  8.  *                                      (615) 982-8723                      *
  9.  *                                                                          *
  10.  *   Include file for    CKIT - DOOR Toolkit v2.54                          *
  11.  *   Modifications for better C++ compatiblity with MSC++ and BC++          *
  12.  *                                                                          *
  13.  ****************************************************************************/
  14. /******************************************************************************
  15. *                        INCLUDE files needed                                 *
  16. *******************************************************************************/
  17. #if     !defined(__CKIT_H)
  18. #define __CKIT_H
  19.  
  20. #include    <stdio.h>
  21. #include    <stdlib.h>
  22. #include    <dos.h>
  23. #include    <time.h>
  24. #include    <string.h>
  25. #include    <stdarg.h>
  26. #include    <share.h>
  27. #include    <io.h>
  28. #define     MICROSOFT   1
  29. #define     TURBOC      2
  30. /****************************************************************************
  31.  *      IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF         *
  32.  ****************************************************************************/
  33. #if COMPILER == MICROSOFT
  34.     #include    <malloc.h>
  35. #else
  36.     #if COMPILER == TURBOC
  37.         #include    <alloc.h>
  38.     #endif
  39. #endif
  40.  
  41. /****************************************************************************
  42.  *     ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF    *
  43.  ****************************************************************************/
  44.  
  45. /* data type definitions */
  46. typedef     unsigned char BYTE;    /* Define BYTE to mean unsigned char */
  47.  
  48. /* logical  constants  */
  49. #define     ERR         -1
  50. #define     EVER        ;;         /* Used in "for (EVER)"              */
  51. #define     FALSE       0
  52. #define     TRUE        1
  53. #define     NOT_READY   -1
  54. #define     NO_KEY      0
  55. #define     EXITDOOR    0           /* User exited Door     */
  56. #define     NOCARRIER   1           /* Carrier lost         */
  57. #define     TIMEOUT     2           /* Keyboard timeout     */
  58. #define     SYSOP_O     3           /* Sysop request        */
  59. #define     SYSTEMTIME  4           /* System time elapse   */
  60. #define     LOGOFF      5           /* Normal logoff        */
  61. /******************************************************************************
  62. *                        ANSI color table indexes                             *
  63. *******************************************************************************/
  64. #define dkblue          1
  65. #define dkgreen         2
  66. #define dkcyan          3
  67. #define dkred           4
  68. #define dkviolet        5
  69. #define magenta         5
  70. #define brown           6
  71. #define grey            7
  72. #define dkgrey          8
  73. #define blue            9
  74. #define green           10
  75. #define cyan            11
  76. #define red             12
  77. #define violet          13
  78. #define yellow          14
  79. #define white           15
  80.  
  81.  
  82. /******************************************************************************
  83.  *        External variable declarations                                      *
  84.  ******************************************************************************/
  85. extern  BYTE    ck_option;             /* Defines how the user was logged off */
  86. extern  int     ck_DUMP_USER;          /* Set to log off user from door       */
  87. extern  BYTE    ck_DOTS;               /* Echo dots with input()              */
  88.  
  89. extern  char    ck_system_time_HHMMSS[];       /* System time                   */
  90. extern  char    ck_todays_date_MMDDYY[];       /* System date                   */
  91. extern  BYTE    ck_cmdline[];                  /* Used to hold user input       */
  92. extern  char    ck_par[];                      /* Used to parse next cmd to     */
  93. extern  short   ck_linenum;                    /* Number of lines displayed     */
  94. extern  short   ck_graphics;                   /* ANSI in use                   */
  95. extern  short   ck_display;                    /* Local display on/off          */
  96. extern  short   ck_local;                      /* Local mode indicator          */
  97. extern  short   ck_printer;                    /* Printer online/offline        */
  98. extern  short   ck_pagebell;                   /* Page bell on/off              */
  99. extern  short   ck_callalarm;                  /* Caller alarm on/off           */
  100. extern  short   ck_port;                       /* Port number in use            */
  101. extern  short   ck_error_connection;           /* Error correction modem?       */
  102. extern  short   ck_scan_code;                  /* Keycodes for non-standard key */
  103.                                             /* F1 - F10, arrow keys etc      */
  104.                                             /* Holds received all keycodes   */
  105.  
  106. /* misc. see CKIT.DOC for more information on these */
  107. extern  short   ck_time_on, ck_prev_used, ck_time_limit, ck_dload_limit,
  108.                 ck_time_added, ck_time_credit, ck_min_left,ck_event_active,
  109.                 ck_event_slide,ck_user_record, ck_ansi_ng, ck_record_lock,
  110.                 ck_PCB12, ck_PCB, ck_WILDCAT, ck_GENERIC,ck_GAP, ck_RBBS,
  111.                 ck_expert, ck_parity, ck_current_conf, ck_chatmode,
  112.                 ck_uart_base, ck_irq, ck_non_ibm, ck_FOSSIL, ck_silent,
  113.                 ck_NO_FKEYS, ck_NO_STATUS, ck_key_source, ck_Digiboard;
  114.  
  115. extern  long    ck_mem_msg;             /* Mem. msg number, PCB 14.x       */
  116. extern  short   ck_time_credit_old;     /* PCB  14.x                       */
  117.  
  118.  
  119. extern  short   ck_logoff_color;  /* Log off message color                 */
  120. extern  BYTE    *ck_conferences;  /* pointer to conferences registered in  */
  121. extern  BYTE    *ck_pcbsysbuf;    /* pointer to buffer holding pcboard.sys */
  122. extern  char    **ck_logoff_msgs; /* pointer to log off messages           */
  123. extern  char    **ck_gen_msgs;    /* pointer to general internal messages  */
  124.  
  125. /* C strings containing information read from BBS system files  */
  126. extern  BYTE    ck_firstname[16];
  127. extern  BYTE    ck_fullname[26];
  128. extern  BYTE    ck_bps_open[6];
  129. extern  BYTE    ck_baud_rate[6];
  130. extern  BYTE    ck_sysop_next[2];
  131. extern  BYTE    ck_netchat[2];
  132. extern  BYTE    ck_password[13];
  133. extern  BYTE    ck_language[6];
  134. extern  BYTE    ck_event_time[6];
  135. extern  BYTE    ck_aport[2];
  136. extern  BYTE    ck_BBSname[63];
  137.  
  138. extern  char    ck_node[3];
  139.  
  140. extern  char    ck_upload_total[5];        /* Total files downloaded   */
  141. extern  char    ck_dload_total[5];         /* Total files uploaded     */
  142. extern  char    ck_daily_bytes[4];         /* Total Daily K bytes      */
  143. extern  char    ck_download_Kbytes[10];    /* Total K bytes downloaded */
  144. extern  char    ck_upload_Kbytes[10];      /* Total K bytes uploaded   */
  145. extern  BYTE    ck_time_logged[6];
  146. extern  char    ck_caller_bday[8];         /* Caller's birthday        */
  147. extern  char    ck_main_dir[80];           /* Main bbs system path     */
  148. extern  char    ck_gen_dir[80];            /* BBS system general path  */
  149. extern  char    ck_sysop_name[15];         /* Sysop first name         */
  150. extern  char    ck_sysop_alias[15];        /* Sysop's alias name       */
  151. extern  char    ck_last_file_scan[8];      /* Last new file scan       */
  152. extern  char    ck_max_files[4];           /* Max files allowed to dl  */
  153. extern  char    ck_daily_files[4];         /* Number of files today    */
  154. extern  char    ck_total_doors[4];         /* Total doors opened       */
  155. extern  char    ck_msgs_left[4];           /* Number of messages left  */
  156. extern  BYTE    ck_page_length;            /* User page length         */
  157. extern  char    ck_protocol[15];           /* User's default protocol  */
  158. extern  char    ck_security_level[5];      /* User's security level    */
  159. extern  char    ck_min_remaining[6];       /* mins left (door.sys)     */
  160. extern  char    ck_sec_remaining[6];       /* secs left (door.sys)     */
  161. extern  char    ck_default_color[2];       /* (door.sys)               */
  162. extern  char    ck_last_called[6];         /* (door.sys)               */
  163.                                               
  164. /* Below is info specific to WILDCAT! users */
  165. extern  char    ck_monitor_type[5]; /* MONO/COLOR (Graphics On/Off)        */
  166. extern  char    ck_max_sec[5];      /* Maximum security allowed             */
  167. extern  char    ck_high_msg[10];    /* High message number read             */
  168. extern  BYTE    ck_name_in_use;     /* True/False Name in use on other node */
  169. extern  char    ck_door_opened[5];  /* Door user opened                     */
  170.  
  171.  
  172. /* Below is info you will need to define in your door program */
  173. extern  short   ck_FORCEOFFHOOK;       /* Set to TRUE or FALSE                */
  174. extern  short   ck_LOGOFFMSG;          /* Set to TRUE or FALSE                */
  175. extern  short   ck_USERSFILE;          /* Set true if you want user file info */
  176.                                        /* PCBoard systems only                */
  177. extern  char    ck_progname[21];       /* Put you program name here.  define  */
  178.                                        /* the string in YOUR program          */
  179.                                        /* MAX. 20 chars. See CKITDEMO.H       */
  180.                                        /* for example                         */
  181. extern  char    ck_error_msg11[40];    /* Display file error msg, if you want */
  182.                                        /* to change it...MAX 40 chars!        */
  183.  
  184.  
  185. /******************************************************************************
  186.  *                    Structure declarations (PCBoard 14.5 only)              *
  187.  ******************************************************************************/
  188. struct pcbuserstype {
  189.     char    name[26];                   /* First and Last name                */
  190.     char    city[25];                   /* City and State                     */
  191.     char    pwrd[13];                   /* Password                           */
  192.     char    bphone[14];                 /* Business/Data phone number         */
  193.     char    phone[14];                  /* Home phone number                  */
  194.     char    last_date[7];               /* Last date on in (YYMMDD) format    */
  195.     char    last_time[6];               /* Last logon time in HH:MM) format   */
  196.     char    expert[2];                  /* Expert Mode (Y or N)               */
  197.     char    protocol[2];                /* Protocol type                      */
  198.     BYTE    packed_byte;                /* Bit packed flags                   */
  199.     char    filedate[7];                /* Last DIR look date (YYMMDD) format */
  200.     BYTE    security;                   /* Security level of user             */
  201.     short   total_calls;                /* Number of times on                 */
  202.     BYTE    page_length;                /* Page length                        */
  203.     short   uploads;                    /* Number of Uploads                  */
  204.     short   downloads;                  /* Number of Downloads                */
  205.     double  dload_bytes;                /* Daily dload bytes so far           */
  206.     char    comment1[31];               /* User maintained comment            */
  207.     char    comment2[31];               /* Sysop maintained comment           */
  208.     short   time_used;                  /* Elapsed time on system             */
  209.     char    expire_date[7];             /* Subscription Reg. Date (YYMMDD)    */
  210.     BYTE    expire_level;               /* Expired security level             */
  211.     BYTE    current_conf;               /* Area number last in                */
  212.     BYTE    conferences[6];             /* Conferences area allowed in        */
  213.     BYTE    expire_conf[6];             /* Expired conference areas           */
  214.     BYTE    scan_conf[6];               /* Conferences desired for mail scan  */
  215.     double  dload_total;                /* Total bytes downloaded - all calls */
  216.     double  upload_total;               /* Total bytes uploaded - all calls   */
  217.     char    delete_user[2];             /* Delete user flag (Y or N)          */
  218.     unsigned long last_msg_read;        /* Last read msg Main area (default)  */
  219.     long    last_read[39];              /* Last Read Message Area pointers    */
  220.     BYTE    space2[15];                 /* Reserved                           */
  221. } extern ck_user;
  222.  
  223. /******************************************************************************
  224.  *   Structure to use with CKIT for BBS's not supported by CKIT               *
  225.  ******************************************************************************/
  226. struct ckitgeneric {
  227.     char port[6];                   /* COM:?  */
  228.     short min_left;                 /* minutes left */
  229. };                                  /* Name this what you want */
  230. extern  short  ck_NOSYSTEM;         /* Set true if want C-kit open_door()  */
  231.                                     /* to obtain information from ck_gen   */
  232.                                     /* ckitgeneric structure               */
  233. /****************************************************************************
  234.  *      IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF         *
  235.  ****************************************************************************/
  236. #ifdef __cplusplus
  237. extern "C" {
  238. #endif
  239.  
  240. /******************************************************************************
  241.  *                Function prototypes                                         *
  242.  ******************************************************************************/
  243. void    s_printf(char *,...);       /* High level variable sio puts           */
  244.  
  245. /*  COMMENT
  246.    Copy this function to your door source code to create the s_printf() func.
  247.    See ckitdemo.c. Default buffer is 82 chars, modify as  needed.
  248.  
  249. void s_printf(char *s_format,...) {
  250.     va_list arg_pointer;
  251.     char buffer[82];
  252.     va_start(arg_pointer, s_format);
  253.     vsprintf(buffer, s_format, arg_pointer);
  254.     s_puts(buffer);
  255.     va_end(arg_pointer);
  256. }
  257.  
  258. */
  259.  
  260. /******************************************************************************
  261.  *                External function prototypes                                *
  262.  ******************************************************************************/
  263.  
  264. extern  void    ck_clear_screen(void);
  265. extern  void    ck_set_r_c(short, short);
  266. extern  short   ck_open_door(char *, ...);
  267. extern  void    ck_close_door(void);
  268. extern  void    ck_s_putv();                   /* High level send variable string I/O function     */
  269. extern  void    ck_s_puts(char *);             /* High level send string I/O function              */
  270. extern  void    ck_s_putsn(char *);            /* High level send string LOCAL only                */
  271. extern  void    ck_s_putstd(char *);           /* High level send string using STD output          */
  272. extern  void    ck_s_putc(BYTE);               /* High level send char.  I/O function              */
  273. extern  void    ck_newline(void);              /* send a Carriage return, line feed                */
  274. extern  void    ck_clear_row(short);           /* Clear a given row of screen                      */
  275. extern  void    ck_color(short);               /* Select ANSI color to use                         */
  276. extern  void    ck_pos_cursor(short, short);   /* Position cursor using ANSI                       */
  277. extern  void    ck_clr_screen(void);           /* Clear local/remote screens                       */
  278. extern  void    ck_back_space(short);          /* Destructive backspace  local/remote              */
  279. extern  void    ck_clear_eol(void);            /* Clear to end of line local/remote                */
  280. extern  short   ck_display_file(char *);       /* Display file local/remote                        */
  281. extern  void    ck_prompt_def(char *, char *); /* Display prompt, with default string              */
  282. extern  void    ck_get_def(char *, char *);    /* Same as prompt_def, but gets input               */
  283. extern  void    ck_get_defn(char *, char *);   /* Same as get_def, appends "(Enter)=none?"                 */
  284. extern  void    ck_get_defen(char *);          /* Same as get_def, but default is always "(Enter=none? "   */
  285. extern  void    ck_get_defyn(char *, short);   /* Get input with yes/no default based on short value       */
  286. extern  short   ck_nomore(void);               /* prompt more?, returns TRUE if no or              */
  287. extern  short   ck_inkey(void);                /* Read char. from local/remote                     */
  288. extern  short   ck_getkey(void);               /* Read char. from local keyboard                   */
  289. extern  short   ck_wait_keypress(void);        /* Waits for any key press, high level              */
  290. extern  void    ck_force_enter(void);          /* Force user to press enter key to continue        */
  291. extern  void    ck_get_cmdline(void);
  292. extern  void    ck_get_cmdline_raw(short);     /* Get cmdline, erase prompt based on short         */
  293. extern  void    ck_input(BYTE *, short);       /* Read input into cmdline, local/remote            */
  294. extern  short   ck_keystat();                  /* Check if key waiting                             */
  295. extern  BYTE    ck_receive(void);              /* Get character receieved from the receive buffer  */
  296. extern  BYTE    ck_sio_getbyte (void);         /* Returns byte from port, if available             */
  297. extern  char    ck_get_nextpar(void);
  298. extern  void    ck_check_time_left(void);  /* Check if user time is up, sets DUMPUSER              */
  299. extern  short   ck_mins_left_system(void); /* Returns number of minutes left on system */
  300. extern  short   ck_system_time_used(void); /* Returns mins since door was opened */
  301. extern  void    ck_adjust_time_allowed(short); /* Add/Subtract user time left                      */
  302. extern  short   ck_check_event(void);      /* Check if time left conflicts with event              */
  303. extern  short   ck_mins_before_event(void);/* Return minutes left before event                     */
  304. extern  short   ck_event_minutes(void);    /* Return minutes from midnight of event                */
  305. extern  void    ck_lower_dtr(void);        /* Lower DTR line on serial port                        */
  306. extern  void    ck_raise_dtr(void);        /* Raise DTR line on serial port                        */
  307. extern  void    ck_force_offhook(void);    /* Force modem to hangup, go offhook                    */
  308. extern  BYTE    ck_check_cd(void);         /* Return CARRIER status, Non-Zero = CARRIER            */
  309. extern  void    ck_transmit_data(char *);  /* Xmit to remote only, with CARRIER detect             */
  310. extern  short   ck_transmit_modem(char *); /* Xmit to modem, WITHOUT CARRIER detect                */
  311. extern  short   ck_tqueue_len(void);       /* Returns length (in bytes) of serial xmit buffer      */
  312. extern  BYTE *  ck_flush_rqueue(void);     /* Flush serial input buffer        */
  313. extern  void    ck_wait(short);            /* Wait delay in seconds            */
  314. extern  short   ck_check_CR(void);         /* Check for Carriage Return, TRUE/FALSE */
  315. extern  short   ck_check_keypress(BYTE);   /* Check for any ASCII code press   */
  316. extern  short   ck_r_count(void);          /* Return number bytes in rqueue    */
  317. extern  void    ck_purge_buffer(BYTE *, short); /* Purge buffer to NULLS       */
  318. extern  void    ck_debug_on(void);         /* Disable keyboard timer, carrier  */
  319. extern  void    ck_debug_off(void);        /* Disable keyboard timer, carrier  */
  320. extern  void    ck_carrier_off(void);      /* Same as debug on                 */
  321. extern  void    ck_carrier_on(void);       /* Same as debug off                */
  322. extern  short   ck_dos_shell(char *, char *);  /* Execute external program     */
  323. extern  void    ck_set_r_c(short, short);  /* Position cursor on local console */
  324. extern  short   ck_update_user();          /* Update user record               */
  325. extern  short   ck_check_CTRL_K(void);     /* Check for CTRL-K press           */
  326. extern  void    ck_CtrlK_ON(void);         /* Enable CTRL-K checking (default) */
  327. extern  void    ck_CtrlK_OFF(void);        /* Disable CTRL-K checking          */
  328. extern  void    ck_set_kybd_time(BYTE, BYTE); /* Set keyboard timeouts         */
  329. extern  short   ck_set_ANSI(short);           /* Turn on ANSI compability      */
  330.  
  331.  
  332. /****************************************************************************
  333.  *      IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF         *
  334.  ****************************************************************************/
  335. /* Turbo C has a delay() function and does the same thing.                  */
  336. #if COMPILER == MICROSOFT           /* Use Ckit's delay if not using TURBOC */
  337.  
  338. extern  void    ck_delay(short);    /* Gen. Purpose delay X 55 milliseconds */
  339.  
  340. #endif
  341.  
  342. /****************************************************************************
  343.  *     ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF    *
  344.  ****************************************************************************/
  345. #ifdef __cplusplus
  346. }
  347. #endif
  348.  
  349.  
  350. #endif  /* __CKIT_H */
  351.  
  352. /******************************************************************************
  353.  ************************ E N D  OF  M O D U L E ******************************/
  354.